package com.acooly.module.openapi.client.provider.wsbank.message.dto;

import com.acooly.module.openapi.client.provider.wsbank.message.base.WsbankResponseInfo;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;

/**
 * @author zhike 2018/5/22 15:32
 */
@Getter
@Setter
@XStreamAlias("body")
public class WsbankPayQueryResponseBody implements Serializable {

    /**
     * 返回码组件。当ResultStatus=S时才有后续的参数返回。
     */
    @XStreamAlias("RespInfo")
    private WsbankResponseInfo responseInfo;

    /**
     *外部交易号
     */
    @XStreamAlias("OutTradeNo")
    private String outTradeNo;

    /**
     *网商支付订单号
     */
    @XStreamAlias("OrderNo")
    private String orderNo;

    /** 支付单类型。枚举值： create：主扫 pay：被扫 create_dynamic：动态扫码 */
    @XStreamAlias("OrderType")
    private String orderType;

    /** 支付状态。枚举值： succ：支付成功 fail：失败 paying：支付中 closed：已关单 cancel：已撤消 */
    @XStreamAlias("TradeStatus")
    private String tradeStatus;
    /**---------------------------下面的参数仅TradeStatus =succ才返回---------------------------------------------------*/
    /**
     *支付渠道类型
     */
    @XStreamAlias("ChannelType")
    private String channelType;

    /**
     *交易总额度，货币最小单位，如人民币：分
     */
    @XStreamAlias("TotalAmount")
    private String totalAmount;

    /**
     *币种。默认CNY。
     */
    @XStreamAlias("Currency")
    private String currency;

    /**
     *商户号。网商为商户分配的商户号，通过商户入驻结果查询接口获取。
     */
    @XStreamAlias("MerchantId")
    private String merchantId;

    /**
     *合作方机构号（网商银行分配）
     */
    @XStreamAlias("IsvOrgId")
    private String isvOrgId;

    /**
     *商品描述。该信息将透传至第三方支付公司系统，并在客户端明细中展示。格式要求：店名-销售商品类目。
     */
    @XStreamAlias("Body")
    private String body;

    /**
     *商品标记。微信支付代金券或立减优惠功能的参数。
     */
    @XStreamAlias("GoodsTag")
    private String goodsTag;

    /**
     *商品详情列表。微信支付单品优惠功能字段，JSON格式base64编码，会透传至第三方支付。
     */
    @XStreamAlias("GoodsDetail")
    private String goodsDetail;

    /**
     *消费者用户标识
     */
    @XStreamAlias("OpenId")
    private String openId;

    /**
     *操作员ID
     */
    @XStreamAlias("OperatorId")
    private String operatorId;

    /**
     *门店ID
     */
    @XStreamAlias("StoreId")
    private String storeId;

    /**
     *终端设备号(门店号或收银设备ID)。
     */
    @XStreamAlias("DeviceId")
    private String deviceId;

    /** 清算方式。可选值： T0：T+0清算按笔清算 T1：T+1汇总清算 */
    @XStreamAlias("SettleType")
    private String settleType;

    /**
     *附加信息，原样返回。
     */
    @XStreamAlias("Attach")
    private String attach;

    /**
     *支付完成时间
     * 格式"yyyy-MM-dd HH:mm:ss"
     */
    @XStreamAlias("GmtPayment")
    private String gmtPayment;

    /**
     *付款银行。银行类型，仅使用微信支付时有返回值
     */
    @XStreamAlias("BankType")
    private String bankType;

    /** 用户是否关注商户公众号，仅微信支付有效。 Y：关注； N：未关注 */
    @XStreamAlias("IsSubscribe")
    private String isSubscribe;

    /**
     *支付宝或微信端的订单号，可用于打印小票给客户核对
     */
    @XStreamAlias("PayChannelOrderNo")
    private String payChannelOrderNo;

    /** *支付宝或微信端的订单号，可用于打印小票给客户核对 */
    @XStreamAlias("MerchantOrderNo")
    private String merchantOrderNo;

    /** *子商户appid。仅微信返回。 */
    @XStreamAlias("SubAppId")
    private String subAppId;

    /**
     *现金券金额。仅微信返回，现金券支付金额<=订单总金额，订单总金额-现金券金额为现金支付金额。
     */
    @XStreamAlias("CouponFee")
    private String couponFee;

    /**
     *用户在商户 appid下的唯一标识。若商户使用合作机构的appid，则返回合作机构下的用户唯一标识。
     */
    @XStreamAlias("SubOpenId")
    private String subOpenId;

    /**
     *买家支付宝登录账号
     */
    @XStreamAlias("BuyerLogonId")
    private String buyerLogonId;

    /**
     *买家支付宝用户id
     */
    @XStreamAlias("BuyerUserId")
    private String buyerUserId;

    /** 借贷标识。可选值： credit：信用卡 pcredit：花呗（仅支付宝） debit：借记卡 balance：余额 unknown：未知 */
    @XStreamAlias("Credit")
    private String credit;

    /**
     *实收金额，商户实际入账的金额（扣手续费之前）。仅支付宝返回
     */
    @XStreamAlias("ReceiptAmount")
    private String receiptAmount;

    /**
     *用户实付金额，建议打印在小票上避免退款时出现纠纷。仅支付宝返回
     */
    @XStreamAlias("BuyerPayAmount")
    private String buyerPayAmount;

    /**
     *开票金额，快速告知商户应该给用户开多少钱发票。仅支付宝返回
     */
    @XStreamAlias("InvoiceAmount")
    private String invoiceAmount;

}
